package org.wheel.plugins.toolkit.sql.render;

import java.util.Map;

/**
 * 参数渲染策略契约
 */
public interface ParamRenderStrategy {
    String render(String sql);

    /**
     * 主要是为Number或者“？”参数渲染准备。
     * @return
     */
    Object getParamObject();

    /**
     * 获取参数集合
     * 配合jdbcTemplate执行即可得到数据结果。
     * 参数列表，必须是有序的，且key为参数名，value为参数值。<br>
     * 参数{@code parameters} 传入的格式 {@code LinkedHashMap<String, Object>} ，具体样例格式为：<pre>{@code
     * {
     *   "1": {"fieldName": "value"},
     *   "2": { "key_1": [1, 2, 3]},
     *   "3": { "key_2: "xxxxxxxx"}
     * }}</pre>
     * 或者正常的Map格式：<pre>{@code
     * {
     *   "fieldName": "value",
     *   "key_1": [1, 2, 3],
     *   "key_2: "xxxxxxxx"
     * }
     * }</pre>
     * @return
     */
    Map<String, Object> getParamMap();
}